package com.demodis.action;

import com.demodis.domain.Json;
import com.demodis.domain.TblUser;
import com.demodis.service.ModelServiceI;
import com.demodis.service.PermissionServiceI;
import com.demodis.service.UserServiceI;
import com.demodis.service.impl.ModelServiceImpl;
import com.demodis.service.impl.PermissionServiceImpl;
import com.demodis.service.impl.UserServiceImpl;
import com.demodis.util.Utils;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends BaseAction implements ModelDriven<TblUser> {

	private static final long serialVersionUID = -8022169658018350438L;

	TblUser user = new TblUser();

	UserServiceI userService = new UserServiceImpl();
	ModelServiceI modelService = new ModelServiceImpl();
	PermissionServiceI permService = new PermissionServiceImpl();

	@Override
	public String execute() throws Exception {
		String URL = "/userAction!query.action";
		String CUURL = "/userAction!queryCUG.action";
		TblUser user = super.getCurrentUser();
		if (permService.existPerm(user.getUserId(), URL)) {
			user.setQueryStatUrl(URL);
		} else if (permService.existPerm(user.getUserId(), CUURL)) {
			user.setQueryStatUrl(CUURL);
		}

		return "success";
	}

	public void query() {
		super.writeJson(userService.getUsers(user));
	}
	
	public void userExist() {
		Json json = new Json();
		if (userService.userExist(user.getUsername())) {
			json.setSuccess(true);
			json.setMsg("该用户已经存在！");
		} else {
			json.setSuccess(false);
			json.setMsg("该用户不存在！");
		}
		super.writeJson(json);
	}

	public void queryUserStat() {
		super.writeJson(userService.getUsers(user));
	}

	public void queryUser() {
		super.writeJson(userService.getUsers(user));
	}

	public void queryCUG() {
		user.setGroupId(super.getCurrentUser().getGroupId());
		super.writeJson(userService.getUsersCU(user));
	}

	public void add() {
		Json json = new Json();
		if (userService.save(user)) {
			json.setSuccess(true);
			json.setMsg("添加成功!");
		} else {
			json.setSuccess(false);
			json.setMsg("添加失败!");
		}

		super.writeJson(json);
	}

	public void modify() {
		Json json = new Json();
		if (userService.modify(user)) {
			json.setSuccess(true);
			json.setMsg("修改成功!");
			json.setObject(user);
		} else {
			json.setSuccess(false);
			json.setMsg("修改失败!");
		}

		super.writeJson(json);
	}

	public void modifyPass() {
		Json json = new Json();
		if (userService.modifyPass(user)) {
			json.setSuccess(true);
			json.setMsg("修改成功!");
		} else {
			json.setSuccess(false);
			json.setMsg("修改失败!");
		}

		super.writeJson(json);
	}

	public void delete() {
		Json json = new Json();
		if (userService.delete(user)) {
			json.setSuccess(true);
			json.setMsg("删除成功!");
		} else {
			json.setSuccess(false);
			json.setMsg("删除失败!");
		}

		super.writeJson(json);
	}

	public void login() {
		Json json = new Json();
		TblUser tblUser = userService.doLogin(user);
		if (tblUser != null) {
			json.setSuccess(true);
			json.setMsg("登录成功!");
			json.setObject(tblUser);
			super.addAttributeForSession("user", tblUser);
		} else {
			json.setSuccess(false);
			json.setMsg("登录失败!用户名或密码错误!");
		}

		super.writeJson(json);
	}

	@Override
	public TblUser getModel() {
		return user;
	}

	public void treeMenu() {
		TblUser user = super.getCurrentUser();
		super.writeJson(modelService.getTreeModel(user));
	}

}
